//字符串中删除特定字符,尽可能的效率高

#include <iostream>

using namespace std;

//设置一个新的字符串
/**
    例如：test，删除t,设置一个256大小的字符串，将t的ASCII码下标改为1
    设置两个下标，一个指向字母原来的位置，一个指向字母目的地。
*/

int removeChars(char * str1,char *str2)
{
    //构造一个新的字符串
    char removeArray[256];
    //初始化字符串
    for(int i = 0;i<256;i++)
    {
        removeArray[i]=0;
    }
    //设置删除字符串
    for(int i =0;str2[i]!='\0';i++)
    {
        removeArray[str2[i]]=1;
    }

    //设置两个下标src和des
    int src = 0,des=0;
    while(str1[src]!='\0')
    {
           if(removeArray[str1[src]]==0)
            {
                str1[des]=str1[src];
                des++;
                src++;
            }
            else
            {
                src++;
            }
    }
    str1[des]='\0';

}
int main()
{

    char str1[] = "this is a test";
    char str2[] = "tes";
    removeChars(str1,str2);
    cout<<"删除后的字符串："<<str1<<endl;
    system("pause");
    return 0;
}
